package com.ideaaedi.springcloud.jd.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ideaaedi.springcloud.jd.commonds.entity.PageInfo;
import com.ideaaedi.springcloud.jd.commonds.entity.user.po.SysRolePO;
import com.ideaaedi.springcloud.jd.commonds.entity.user.vo.req.SysRoleAddReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.user.vo.req.SysRoleListReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.user.vo.req.SysRoleUpdateReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.user.vo.resp.SysRoleDetailRespVO;
import com.ideaaedi.springcloud.jd.commonds.entity.user.vo.resp.SysRoleListRespVO;
import org.springframework.lang.NonNull;

import java.util.Set;

/**
 * <p>
 * 系统-角色表 服务类
 * </p>
 *
 * @author <font size = "20" color = "#3CAA3C"><a href="https://gitee.com/JustryDeng">JustryDeng</a></font> <img src="https://gitee.com/JustryDeng/shared-files/raw/master/JustryDeng/avatar.jpg" />
 * @since 2021.0.1.A
 */
public interface SysRoleService extends IService<SysRolePO> {
    
    /**
     * 列表
     *
     * @param req 参数
     *
     * @return 角色列表
     */
    PageInfo<SysRoleListRespVO> list(SysRoleListReqVO req);
    
    /**
     * 详情
     *
     * @param roleId 角色id
     *
     * @return 角色详情
     */
    SysRoleDetailRespVO detail(Long roleId);
    
    /**
     * 更新
     *
     * @param req 参数
     *
     * @return 新增后的角色详情
     */
    SysRoleDetailRespVO update(SysRoleUpdateReqVO req);
    
    /**
     * 新增
     *
     * @param req 参数
     *
     * @return 修改后的角色详情
     */
    SysRoleDetailRespVO add(SysRoleAddReqVO req);
    
    /**
     * 删除
     *
     * @param roleId 角色id
     *
     * @return 删除了的角色id
     */
    SysRoleDetailRespVO delete(Long roleId);
    
    /**
     * 获取用户拥有的角色id
     *
     * @param userId 要查询的用户
     *
     * @return 用户拥有的角色id集合
     */
    @NonNull
    Set<Long> loadCurrUserRoleIds(@NonNull Long userId);
}
